package com.airlines.crewassignment.dao;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.airlines.crewassignment.domain.Crew;
import com.airlines.crewassignment.domain.DateTimeRange;
import com.airlines.crewassignment.domain.Position;

/**
 * @author xxxx
 * @date 2018年4月8日 
 * @description
 */
public interface PositionMapper {
	List<Position> listPosition(Position position);
	
	/**
	 * 将某一天排班的用户编号全部置为null
	 * @param flightDate
	 */
	void updatePcodeNull(@Param("flightDate")Date flightDate,@Param("dutyCode")String dutyCode);

	
	void updatePCode(@Param("position")Position position, @Param("crew")Crew crew);

	/**
	 * 查询当前系统已排班最大日期
	 * @return
	 */
	Date findMaxScheduleDay();
	
	Position selectByPrimaryKey(int positionId);
	
	int insertSelective(Position position);
	
	int updateByPrimaryKeySelective(Position position);
	
	int deleteByPrimaryKey(int positionId);
	
	/**
	 * 删除某一天的所有号位
	 * @param flightDate not null
	 * @param crewLinkLinNo 
	 * @param dutyCode not null
	 * @return
	 */
	int deleteByFlightDate(@Param("flightDate")Date flightDate,@Param("crewLinkLineNo")Integer crewLinkLineNo,@Param("dutyCode")String dutyCode);

	/**
	 * 对某天的号位进行确认
	 * @param flightDate
	 * @param dutyCode
	 * @return
	 */
	int confirm(@Param("flightDate") Date flightDate,@Param("dutyCode") String dutyCode);

	/**
	 * 从C3010获取初始化的号位信息
	 * @param crewTypeId
	 * @return
	 */
	List<Position> listPositionByCrewType(@Param("crewTypeId")int crewTypeId);
	
	/**
	 * 删除某个时间段内的号位信息
	 * @param dutyCode
	 * @param dateTimeRange
	 */
	int deleteByFlightDateRange(@Param("dutyCode")String dutyCode,@Param("dateTimeRange")DateTimeRange dateTimeRange);
	
	/**
	 * 查询某段时间内没有人员的号位
	 * @param dutyCode
	 * @param dateTimeRange
	 * @return
	 */
//	List<Position> listPositionBeforeNotHavePcode(@Param("dutyCode")String dutyCode,@Param("dateTimeRange")DateTimeRange dateTimeRange);
	}
